Skip to content

chore: promote expbkmain to bkmain (remote open targets, mobile plan banner + per-remote icons) - #167

Merged
tusharbhardwaj-bk merged 4 commits into
bkmainfrom
expbkmain
Sep 4, 2026
Merged

tusharbhardwaj-bk merged 4 commits into
bkmainfrom
expbkmain

Conversation

@tusharbhardwaj-bk

@tusharbhardwaj-bk tusharbhardwaj-bk commented Sep 4, 2026 •

Copy link
Copy Markdown
Collaborator

Promotes expbkmain (293603e6b) to bkmain. Verified live on expbkt3 before opening: deployed-sha matches 293603e6b, t3-expbkt3.service active since 08:07 UTC today, HTTPS 200.

Merges cleanly into bkmain — no conflicts (git merge-tree reports only an auto-merge in docs/operations/expbkt3-customizations.md).

⚠️ Merging this restarts bkt3 and kills every live session

t3-bkmain.service restarts on deploy, which ends every in-flight agent turn on bkt3.

What's included (2 promoted PRs)

Open a remote worktree in your own editor, Obsidian, or Finder (#165) — the managed desktop build points its primary environment at the central bkt3 server, but upstream's remote-open resolver treats a desktop renderer's primary as this machine, so "Open in Cursor" asked dev-server-1 to launch an editor and nothing opened on the viewer's Mac. The corrected predicate lives in apps/web/src/fork/remoteOpenManaged.ts behind one marked call site. Also backports upstream pingdotgg#8305 verbatim (each host advertises the account its server runs as, so the SSH deep link connects as ubuntu on ds1 rather than the viewer's own username), and adds user-defined "Open in…" targets — a URL template plus remote-to-local path mappings, with presets for Obsidian, Finder, and Zed-over-SSH. Desktop fires these through a dedicated desktop:bk-open-target IPC channel rather than widening ElectronShell's allowlist.

Mobile plan banner, per-remote icons, collapse-all (#166) — the plan-ready banner rendered under iOS's transparent glass header and status bar; it now sits with the pending cards above the composer. Plan review sheets used web-only colour tokens that rendered black in dark mode. The environment nickname/icon/colour catalogue moved to packages/client-runtime so mobile can show SF Symbol glyphs per remote on phase sidebar rows. Plus a collapse-all button in the web/desktop file browser.

Divergence note

bkmain carries #164 (the reaper's unindexed-event-scan fix) which is not on expbkmain, so the merged combination has not itself run on expbkt3. The two sides are disjoint — #164 is server-side persistence/reaper, the promoted work is web/mobile client — and the merge has no conflicts.

Verification carried over from the promoted PRs

Risk

#165's remote-open fix ships in the desktop bundle and has not been exercised on a real Mac; a broken target is disabled with a reason rather than opening the wrong folder. Mobile changes are client-side only. No migrations.

Model: Claude Opus 5 (1M context), harness: Claude Code in T3 Code.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

tusharbhardwaj-bk and others added 4 commits September 3, 2026 19:03
The managed desktop build points its primary environment at the central bkt3
server, but upstream's remote-open resolver treats a desktop renderer's primary
as this machine unconditionally. So "Open in Cursor" asked dev-server-1 to
launch an editor there, which silently did nothing on the viewer's Mac.

The fork now tells the resolver that a managed primary is remote, so it builds
the SSH deep link it already knows how to build. Upstream PR pingdotgg#8305 is
backported alongside it, so each host advertises its own login account and the
link connects as that user rather than the viewer's - which is what makes
several servers with different accounts work from one client.

Editors reach another machine over SSH; Obsidian and a file manager cannot, so
they need to be pointed at a local copy. "Open in..." targets pair a URL
template with remote-to-local path mappings, optionally scoped to one host, and
appear in the same Open menu. On a local server the path is used as-is.

Model: Claude Opus 5 (1M context), harness: Claude Code in T3 Code.
fix(web): open a remote worktree in your own editor, Obsidian, or Finder
…, collapse-all in the web file browser

Three pieces of device feedback on 1.0.4.15.

The 'Plan ready for review' banner rendered above the thread body, which on
iOS sits under the transparent glass header and status bar, so it could not
be tapped. It now lives with the other pending cards above the composer.
The plan review sheets also used web-only colour tokens that render black
in dark mode; swept to the mobile theme tokens.

Sessions from several remotes were indistinguishable on the phone. The
environment nickname / icon / colour catalogue moved from apps/web into
client-runtime so both clients derive the same default look from the
environment id; mobile stores overrides in device preferences and shows the
glyph on phase sidebar rows whenever rows span more than one environment.
Configure it from Settings → Connections or from the sidebar's Group-by
sheet.

The web and desktop file browser gained a collapse-all button next to
refresh.

Model: Claude Fable 5.1 (Claude Code)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
feat(mobile): plan banner above the composer, per-remote icons on iOS, collapse-all in the web file browser
@github-actions github-actions Bot added size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Sep 4, 2026
@github-actions

github-actions Bot commented Sep 4, 2026

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 13.6 KiB — 15.1 KiB ✅
Codex Thread snapshot wire — 7.2 KiB — 7.3 KiB ✅
Codex Live turn WebSocket wire — 6.4 KiB — 7.8 KiB ✅
Codex Live turn WebSocket decoded — 55.7 KiB — 66.4 KiB ✅
Codex Live turn messages — 11 — 21 ✅
Claude Total thread wire — 13.6 KiB — 15.1 KiB ✅
Claude Thread snapshot wire — 7.2 KiB — 7.3 KiB ✅
Claude Live turn WebSocket wire — 6.4 KiB — 7.8 KiB ✅
Claude Live turn WebSocket decoded — 56.5 KiB — 66.4 KiB ✅
Claude Live turn messages — 11 — 21 ✅

Baseline: unavailable · PR result: 293603e · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 110.5 KiB
  • Claude decoded thread snapshot: 111.1 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@tusharbhardwaj-bk
tusharbhardwaj-bk merged commit aecf9af into bkmain Sep 4, 2026
27 of 28 checks passed

This branch was successfully deployed

1 active deployment
bk-desktop-staging — 293603e6 Deployed Sep 4, 2026 by tusharbhardwaj-bk via Publish #70
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant